/*-------------------------------------------------------------------------- 
AT89X52.H 
Header file for the low voltage Flash Atmel AT89C52 and AT89LV52. 
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. 
All rights reserved. 
--------------------------------------------------------------------------*/ 
#ifndef __AT89X52_H__ 
#define __AT89X52_H__ 
/*------------------------------------------------ 
Byte Registers 
------------------------------------------------*/ 
sfr P0 	= 0x80; 
sfr SP 	= 0x81; 
sfr DPL 	= 0x82; 
sfr DPH 	= 0x83; 
sfr PCON 	= 0x87; 
sfr TCON 	= 0x88; 
sfr TMOD 	= 0x89; 
sfr TL0 	= 0x8A; 
sfr TL1 	= 0x8B; 
sfr TH0 	= 0x8C; 
sfr TH1 	= 0x8D; 
sfr P1 	= 0x90; 
sfr SCON 	= 0x98; 
sfr SBUF 	= 0x99; 
sfr P2 	= 0xA0; 
sfr IE 	= 0xA8; 
sfr P3 	= 0xB0; 
sfr IP 	= 0xB8; 
sfr T2CON 	= 0xC8; sfr T2MOD 	= 0xC9; sfr RCAP2L = 0xCA; sfr RCAP2H = 0xCB; 
sfr TL2 	= 0xCC; 
sfr TH2 	= 0xCD; 
sfr PSW 	= 0xD0; 
sfr ACC 	= 0xE0; 
sfr B 	= 0xF0; 
/*------------------------------------------------ 
P0 Bit Registers 
------------------------------------------------*/ sbit P0_0 = 0x80; sbit P0_1 = 0x81; sbit P0_2 = 0x82; sbit P0_3 = 0x83; sbit P0_4 = 0x84; sbit P0_5 = 0x85; sbit P0_6 = 0x86; sbit P0_7 = 0x87; 
/*------------------------------------------------ 
PCON Bit Values 
------------------------------------------------*/ 
#define IDL_ 	0x01 
#define STOP_ 	0x02 	
#define PD_ 	0x02 	/* Alternate definition */ 
#define GF0_ 	0x04 	
#define GF1_ 	0x08 	
#define SMOD_ 	0x80 	
/*------------------------------------------------ 
TCON Bit Registers 
------------------------------------------------*/ 
sbit IT0 	= 0x88; 
sbit IE0 	= 0x89; 
sbit IT1 	= 0x8A; 
sbit IE1 	= 0x8B; 
sbit TR0 = 0x8C; sbit TF0 = 0x8D; sbit TR1 = 0x8E; sbit TF1 = 0x8F; 
/*------------------------------------------------ 
TMOD Bit Values 
------------------------------------------------*/ 
#define T0_M0_ 	0x01 
#define T0_M1_ 	0x02 
#define T0_CT_ 	0x04 
#define T0_GATE_ 0x08 
#define T1_M0_ 	0x10 
#define T1_M1_ 	0x20 
#define T1_CT_ 	0x40 
#define T1_GATE_ 0x80 
#define T1_MASK_ 0xF0 
#define T0_MASK_ 0x0F 
/*------------------------------------------------ 
P1 Bit Registers 
------------------------------------------------*/ sbit P1_0 = 0x90; sbit P1_1 = 0x91; sbit P1_2 = 0x92; sbit P1_3 = 0x93; sbit P1_4 = 0x94; sbit P1_5 = 0x95; sbit P1_6 = 0x96; sbit P1_7 = 0x97; 
sbit T2 	= 0x90; 	/* External input to Timer/Counter 2, clock out */ 
sbit T2EX = 0x91; 	/* Timer/Counter 2 capture/reload trigger & dir ctl */ 
/*------------------------------------------------ 
SCON Bit Registers 
------------------------------------------------*/ 
sbit RI 	= 0x98; sbit TI 	= 0x99; sbit RB8 = 0x9A; sbit TB8 = 0x9B; sbit REN = 0x9C; sbit SM2 	= 0x9D; sbit SM1 	= 0x9E; sbit SM0 	= 0x9F; 
/*------------------------------------------------ 
P2 Bit Registers 
------------------------------------------------*/ 
sbit P2_0 = 0xA0; sbit P2_1 = 0xA1; sbit P2_2 = 0xA2; sbit P2_3 = 0xA3; sbit P2_4 = 0xA4; sbit P2_5 = 0xA5; sbit P2_6 = 0xA6; sbit P2_7 = 0xA7; /*------------------------------------------------ 
IE Bit Registers 
------------------------------------------------*/ 
sbit EX0 	= 0xA8; 	/* 1=Enable External interrupt 0 */ 
sbit ET0 	= 0xA9; 	/* 1=Enable Timer 0 interrupt */ 
sbit EX1 	= 0xAA; 	/* 1=Enable External interrupt 1 */ 
sbit ET1 	= 0xAB; 	/* 1=Enable Timer 1 interrupt */ 
sbit ES 	= 0xAC; 	/* 1=Enable Serial port interrupt */ 
sbit ET2 	= 0xAD; 	/* 1=Enable Timer 2 interrupt */ 
sbit EA 	= 0xAF; 	/* 0=Disable all interrupts */ 
/*------------------------------------------------ 
P3 Bit Registers (Mnemonics & Ports) 
------------------------------------------------*/ 
sbit P3_0 = 0xB0; sbit P3_1 = 0xB1; sbit P3_2 = 0xB2; sbit P3_3 = 0xB3; sbit P3_4 = 0xB4; sbit P3_5 = 0xB5; sbit P3_6 = 0xB6; sbit P3_7 = 0xB7; 
sbit RXD = 0xB0; 	/* Serial data input */ 
sbit TXD = 0xB1; 	/* Serial data output */ 
sbit INT0 = 0xB2; 	/* External interrupt 0 */ 
sbit INT1 = 0xB3; 	/* External interrupt 1 */ 
sbit T0 	= 0xB4; 	/* Timer 0 external input */ 
sbit T1 	= 0xB5; 	/* Timer 1 external input */ 
sbit WR 	= 0xB6; 	/* External data memory write strobe */ 
sbit RD 	= 0xB7; 	/* External data memory read strobe */ 
/*------------------------------------------------ 
IP Bit Registers 
------------------------------------------------*/ 
sbit PX0 	= 0xB8; 
sbit PT0 	= 0xB9; 
sbit PX1 	= 0xBA; 
sbit PT1 	= 0xBB; 
sbit PS 	= 0xBC; sbit PT2 = 0xBD; 
/*------------------------------------------------ 
T2CON Bit Registers 
------------------------------------------------*/ 
sbit CP_RL2= 0xC8; 	/* 0=Reload, 1=Capture select */ 
sbit C_T2 = 0xC9; 	/* 0=Timer, 1=Counter */ 
sbit TR2 = 0xCA; 	/* 0=Stop timer, 1=Start timer */ 
sbit EXEN2= 0xCB; 	/* Timer 2 external enable */ 
sbit TCLK = 0xCC; 	/* 0=Serial clock uses Timer 1 overflow, 1=Timer 2 */ 
sbit RCLK = 0xCD; 	/* 0=Serial clock uses Timer 1 overflow, 1=Timer 2 */ 
sbit EXF2 = 0xCE; 	/* Timer 2 external flag */ 
sbit TF2 = 0xCF; 	/* Timer 2 overflow flag */ 
/*------------------------------------------------ 
T2MOD Bit Values 
------------------------------------------------*/ 
#define DCEN_ 	0x01 	/* 1=Timer 2 can be configured as up/down counter */ 
#define T2OE_ 	0x02 	/* Timer 2 output enable */ 
/*------------------------------------------------ 
PSW Bit Registers 
------------------------------------------------*/ 
sbit P 	= 0xD0; 
sbit F1 	= 0xD1; 
sbit OV 	= 0xD2; 
sbit RS0 	= 0xD3; 
sbit RS1 	= 0xD4; 
sbit F0 	= 0xD5; 
sbit AC 	= 0xD6; 
sbit CY 	= 0xD7; 
/*------------------------------------------------ Interrupt Vectors: 
Interrupt Address = (Number * 8) + 3 
------------------------------------------------*/ 
#define IE0_VECTOR 	0 	/* 0x03 External Interrupt 0 */ 
#define TF0_VECTOR 	1 	/* 0x0B Timer 0 */ 
#define IE1_VECTOR 	2 	/* 0x13 External Interrupt 1 */ 
#define TF1_VECTOR 	3 	/* 0x1B Timer 1 */ 
#define SIO_VECTOR 	4 	/* 0x23 Serial port */ 
#define TF2_VECTOR 	5 	/* 0x2B Timer 2 */ 
#define EX2_VECTOR 	5 	/* 0x2B External Interrupt 2 */ 
#endif 
 

